﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using CIIS.Common;

namespace CIIS
{
    public partial class Main : BaseForm
    {
        string[] menuNames = null;

        public Main()
        {
            InitializeComponent();
            this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
            this.WindowState = FormWindowState.Maximized;

            //menuNames = Enum.GetNames(typeof(EMenus));
            menuNames = new string[] {
                EMenus.人员档案管理.ToString(),
                EMenus.特情人员管理.ToString(),
                EMenus.特情人员审核.ToString(),
                EMenus.特情工作布置.ToString(),
                EMenus.特情保护协调.ToString(),
                EMenus.特情奖励.ToString(),
                EMenus.重点刑嫌人员管理.ToString(),
                EMenus.重点刑嫌人员审核.ToString(),
                EMenus.重点刑嫌人员交控登记.ToString(),
                EMenus.重点刑嫌人员调控登记.ToString(),
                EMenus.侦查阵地登记.ToString(),
                EMenus.侦查阵地登记审核.ToString(),
                EMenus.业务应用.ToString(),
                EMenus.特情线索档案.ToString(),
                EMenus.特情线索档案审核.ToString(),
                EMenus.打击处理刑嫌.ToString(),
                EMenus.线索处理结果.ToString(),
                EMenus.综合查询.ToString(),
                EMenus.特情人员查询.ToString(),
                EMenus.重点刑嫌人员查询.ToString(),
                EMenus.阵控点查询.ToString(),
                EMenus.线索关联查询.ToString(),
                EMenus.数据导入导出查询.ToString(),
                EMenus.考核统计.ToString(),
                EMenus.刑事特情数据统计.ToString(),
                EMenus.特情发挥情况统计.ToString(),
                EMenus.未提供线索情况统计.ToString(),
                EMenus.线索使用情况统计.ToString(),
                EMenus.线索交叉发挥情况统计案件.ToString(),
                EMenus.线索交叉发挥情况统计人员.ToString(),
                EMenus.阵控点发挥情况统计.ToString(),
                EMenus.全省刑侦基础工作统计分析.ToString(),
                EMenus.月破案情况登记.ToString(),
                EMenus.用户管理主.ToString(),
                EMenus.角色管理.ToString(),
                EMenus.用户管理.ToString(),
                EMenus.系统管理.ToString(),
                EMenus.单位管理.ToString(),
                EMenus.民警信息维护.ToString(),
                EMenus.数据导出派出所.ToString(),
                EMenus.数据导出分局.ToString(),
                EMenus.数据导出市局.ToString(),
                EMenus.数据导入.ToString(),
                EMenus.表码管理.ToString(),
                EMenus.全局参数设置.ToString()};

            //通过权限过滤菜单也做在此处
            foreach (ToolStripMenuItem v in menuStripMain.Items)
            {
                InitMenuItem(v);
            }
            //TestDataSet();

            panelControlOperateArea.Controls.Add(new SecretPersonManage() { Dock = DockStyle.Fill });
        }
        //void TestDataSet()
        //{
        //    Framework.QueryInfo info = new Framework.QueryInfo();
        //    info.CustomSQL = "select * from bm_shzt";
        //    Dao.ExcuteDataSet(info);
        //}

        /// <summary>
        /// 初始化菜单，包括根据权限设置可见性，菜单事件等
        /// </summary>
        /// <param name="tsmi"></param>
        void InitMenuItem(ToolStripMenuItem tsmi)
        {
            if (tsmi != null)
            {
                string menuName = GetMenuName(tsmi.Text);
                if (!menuNames.Contains(menuName))
                {
                    tsmi.Visible = false;
                    return;
                }
                if (tsmi.HasDropDownItems)
                {
                    foreach (ToolStripMenuItem v in tsmi.DropDownItems)
                    {
                        InitMenuItem(v);
                    }
                }
                else
                {
                    tsmi.Click += new EventHandler(ToolStripMenuItem_Click);
                }
            }
        }

        void ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem;
            if (tsddi != null)
            {
                EMenus menu;
                string menuName = GetMenuName(tsddi.Text);
                UserControl uc = null;
                if (Enum.TryParse<EMenus>(menuName, out menu))
                {
                    switch (menu)
                    {
                        #region 人员档案管理
                        case EMenus.特情人员管理:
                            uc = new SecretPersonManage();
                            break;
                        case EMenus.特情人员审核:
                            uc = new VerifyManage();
                            break;
                        case EMenus.特情工作布置:
                            uc = new ArrangementManage();
                            break;
                        case EMenus.特情保护协调:
                            uc = new PacManage();
                            break;
                        case EMenus.特情奖励:
                            uc = new RewardManage();
                            break;
                        case EMenus.重点刑嫌人员管理:
                            uc = new SeuspectManage();
                            break;
                        case EMenus.重点刑嫌人员审核:
                            uc = new SeuspectVerifyManage();
                            break;
                        case EMenus.重点刑嫌人员交控登记:
                            uc = new SeuspectRegManage();
                            break;
                        case EMenus.重点刑嫌人员调控登记:
                            uc = new MonitorManage();
                            break;
                        case EMenus.侦查阵地登记:
                            uc = new LocationManage();
                            break;
                        case EMenus.侦查阵地登记审核:
                            uc = new LocationVerifyManage();
                            break;
                        #endregion

                        #region 业务应用
                        case EMenus.特情线索档案:
                            uc = new ClueManage();
                            break;
                        case EMenus.特情线索档案审核:
                            uc = new ClueVerifyManage();
                            break;
                        case EMenus.打击处理刑嫌:
                            uc = new CombatManage();
                            break;
                        case EMenus.线索处理结果:
                            uc = new ClueResultManage();
                            break;
                        #endregion

                        #region 综合查询
                        case EMenus.特情人员查询:
                            uc = new SecretQuery();
                            break;
                        case EMenus.重点刑嫌人员查询:
                            uc = new SeuspectQuery();
                            break;
                        case EMenus.阵控点查询:
                            uc = new LocationQuery();
                            break;
                        case EMenus.线索关联查询:
                            uc = new ClueRelationQuery();
                            break;
                        case EMenus.数据导入导出查询:
                            uc = new DataExportImportQuery();
                            break;
                        #endregion

                        #region 考核统计
                        case EMenus.刑事特情数据统计:
                            break;
                        case EMenus.特情发挥情况统计:
                            break;
                        case EMenus.未提供线索情况统计:
                            break;
                        case EMenus.线索使用情况统计:
                            break;
                        case EMenus.线索交叉发挥情况统计案件:
                            break;
                        case EMenus.线索交叉发挥情况统计人员:
                            break;
                        case EMenus.阵控点发挥情况统计:
                            break;
                        case EMenus.全省刑侦基础工作统计分析:
                            break;
                        case EMenus.月破案情况登记:
                            break;
                        #endregion

                        #region 用户管理
                        case EMenus.角色管理:
                            uc = new RoleManage();
                            break;
                        case EMenus.用户管理:
                            uc = new UserManageControl();
                            break;
                        #endregion

                        #region 系统管理
                        case EMenus.单位管理:
                            uc =new  OfficeControl();
                            break;
                        case EMenus.民警信息维护:
                            break;
                        #region 数据导出
                        case EMenus.数据导出派出所:
                            break;
                        case EMenus.数据导出分局:
                            break;
                        case EMenus.数据导出市局:
                            break;
                        #endregion
                        case EMenus.数据导入:
                            break;
                        case EMenus.表码管理:
                            break;
                        case EMenus.全局参数设置:
                            break;
                        #endregion
                    }

                    //XtraMessageBox.Show(tsddi.Text);
                }

                if (uc != null)
                {
                    uc.Dock = DockStyle.Fill;
                    uc.AutoScroll = false;
                    panelControlOperateArea.HorizontalScroll.Visible = false;
                    panelControlOperateArea.Controls.Clear();
                    panelControlOperateArea.Controls.Add(uc);
                }
            }
        }

        /// <summary>
        /// 通过菜单名字得到对应的枚举名，去除括号，其它要求保持一致
        /// </summary>
        /// <param name="menuName"></param>
        /// <returns></returns>
        private string GetMenuName(string menuName)
        {
            if (!string.IsNullOrWhiteSpace(menuName))
            {
                menuName = menuName.Replace("(", string.Empty).Replace(")", string.Empty);
            }
            return menuName;
        }

        private void buttonClose_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }

    }
}
